home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * Ce fichier, ainsi que tous les modules l'accompagnant, peut et doit *
- * etre copié GRATUITEMENT à la seule condition expresse de conserver *
- * l'INTEGRALITE du Code Source, de la documentation, et des fichiers *
- * annexes du package. Ce logiciel est Shareware, veuilez envoyer 100 FF à *
- * l'auteur pour recevoir regulièrement les nouvelles versions. *
- * Toute modification est INTERDITE sans l'autorisation écrite de l'auteur. *
- * Tous droits réservés à M. DIALLO Barrou, Juillet 1992. *
- ***************************************************************************/
-
- FCTLIB *extfct=NULL, *curextfct=NULL, *curlibfct=NULL; /* liste des fonctions externes */
- /* debut de liste fin de liste fct en cours d'analyse */
- /************* Globals de Cleobis ************************/
-
- Entete head= { "Cleobis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0, 0, 0, 0L };
- /* Declaration de l'entete courante */
- long *buf_entier; /* Declaration du buffer des 'Entier' */
- double *buf_reel; /* Declaration du buffer des 'Reel' */
- char *buf_chr; /* des 'Chr' */
- char **buf_chaine; /* Declaration du buffer des chaines */
-
- BOOL dismode=FALSE;
- int NbAdr =0; /*** Nbre d'adresses ***/
- int NbSym =0; /*** Nbre de symbols ***/
- int NbConst=0; /*** Nbre de constante ***/
- int NbVar=0; /*** Nbre de variable ***/
-
- MY_TYPESID lasttokentype; /* type de l'avant dernier token */
- MY_TYPESID curtokentype; /*** type du token courant ***/
- MY_TYPESID facttype; /* Type du token courant dans Facteur() */
- MY_CONST curconst; /** Valeur de la constante courante */
- char curtoken[MAXSTRING]; /* Ligne courante de traitement */
- int curtokenid; /** Id du token courant **/
- int lasttokenid; /* Id de l'avant dernier token */
-
- CONST *symb=NULL, *cursymb=NULL; /** Liste de SYMBOLS **/
- VAR *var=NULL, *curvar=NULL; /** Liste de VARIABLES **/
-
- PROG *prg=NULL; /*** Debut du prg code ***/
- PROG *curprg=NULL; /** cpt courant de prog **/
-
- long AdressSize=5000; /*** Taille Tableau d'adresses ***/
- int *Adress=NULL; /*** " " " " ***/
- int curadr=0; /** Adr courante **/
- int pcpc =0; /** Compteur d'adresses **/
- long TextSize=0;
- int SymbolSize=MAXSTRING; /* nombre de chr maxi dans un symbol */
- int ExecMode = RUNNING;
- char *ErrorFileName = NULL; char *TxtFileName = NULL;
- char *CodeFileName = NULL;
-
- FILE *ErrorF=NULL, *TxtF=NULL, *CodeF=NULL; /* Descripteur Fichiers erreur, txt, code */
- char *Txt=NULL; /* Adr du Buffer Source */
-
- long lg=0; /* Compteur d'octet dans le source */
- int curlg=1, curcol=0; /* No ligne & col courantes */
- BOOL quote=FALSE;
- int Nbfct=0; /* Nbre de fct & proc */
- int curfct=0; /* Num de la fct courante */
- char *curc; /** Chr courant */
- int debut=0; /* Adress du debut du prg */
- /***** Operateurs mathématiques *********/
-
- OPE Mathope[] = { "+", plus_o, "-", moins_o,
- "*", fois_o, "/", divise_o, "%", mod_o,
- (char*)NULL,fin_o
- };
-
- BOOLEEN Bool[] = { "and", et_b, "or", ou_b, "xor", ouex_b,
- "not", non_b, "in", in_b, "mod", mod_o, "div", div_o,
- "xxx := xxx", affecte_b,
- (char*)NULL, fin_b
- };
-
- /******* Procedures & Types Standard Pascal ******/
-
- MOT Reserved[] = { "program", program_f, "if", if_f, "then", then_f,
- "else", else_f, "while", while_f, "do", do_f,
- "for", for_f, "repeat", repeat_f, "until", until_f,
- "begin", begin_f, "end", end_f, "var", var_f,
- "to", to_f, "downto", downto_f, "of", of_f, "function",function_f,
- "procedure", procedure_f, "goto", goto_f,
- (char*)NULL, fin_f
- };
-
- MOT Type[] = {
- "real", real_t, "integer", integer_t, "string", string_t,
- "boolean", boolean_t, "char", char_t, "array", array_t,
- "longint", longint_t, "longreal", longreal_t,
- "point2d", point2d_t, "point3d", point3d_t, "rgb", rgb_t,
- (char*)NULL, fin_t
- };
-
- FIELDSTRUCT Field[] = {
- point2d_t, "xy", point3d_t ,"xyz", rgb_t ,"rgb",
- fin_t, (char*)NULL
- };
-
- MOT Fonctions[] = { "read", read_fio, "readln", readln_fio,
- "write", write_fio, "writeln", writeln_fio,
- "inclib",inclib_fio,
- (char*)NULL, fin_fio
- };
-
- MOT Math[] = { "abs", abs_m, "atan", atan_m, "acos", acos_m,
- "asin", asin_m, "cosh", cosh_m, "sinh", sinh_m,
- "cos", cos_m, "sin", sin_m, "exp", exp_m, "frac", frac_m,
- "trunc", int_m, "ln", ln_m, "sqr", sqr_m, "sqrt", sqrt_m,
- "odd", odd_m, "even", even_m, "pred", pred_m ,"succ", succ_m,
- "inv", inv_m, "rnd", rnd_m,"tanh", tanh_m, "tan", tan_m,
- (char*)NULL, fin_m
- };
-
- Erreur Avertis[] = {
- "Compilation sans fichier de configuration",0,
- "Fichier Code par defaut",1,
- (char *)NULL, 0
- };
-
- Erreur Erreurs[] = {
- "Fichier Config de Compilation introuvable.",0,
- "Mauvaise Syntaxe dans fichier Config",1,
- "Mauvaise Syntaxe",2,
- "Mauvais Type d'argument",3,
- "Variable de configuration inconnue",4,
- "Mode d'execution inconnu",5,
- "Mauvais Arguments",6,
- "Impossible d'ouvrir le fichier de Code",7,
- "Impossible d'ouvrir le fichier Source",8,
- "Pas assez de memoire pour le Code",9,
- "Pas assez de memoire pour le Fichier Source",10,
- "Pas assez de memoire pour la table des Symboles",11,
- "Guillements non fermees",12,
- "Constante Reelle incoherente",13,
- "Fin de fichier Texte Prematuree",14,
- "Pas assez de memoire pour la compilation",15,
- "Constante Chaine trop longue", 16,
- "Double symbole",17,
- "Point inexistant",18,
- "Point-virgule inexistant",19,
- "PROGRAM inexistant",20,
- "Identificateur inexistant",21,
- "Operateur d'affectation ':=' inexistant",22,
- "BEGIN inexistant", 23,
- "END inexistant", 24,
- "Parenthese ouvrante manquante", 25,
- "Parenthese fermante manquante", 26,
- "Separateur ':' manquant", 27,
- "Declaration de variable sans type ou type inconnu", 28,
- "Pas assez de place dans la table d'adresses",29,
- "Variable ou Fonction non declaree", 30,
- "DO inexistant", 31,
- "Operateur Booleen inexistant", 32,
- "THEN inexistant", 33,
- "UNTIL inexistant", 34,
- "PROCEDURE incomplète, parametres ou ';' inexistant", 35,
- "Crochet ouvrant manquant",36,
- "Crochet fermant manquant",37,
- "Constante manquante",38,
- "Separateur '..' attendu",39,
- "OF inexistant", 40,
- "Champs de structure non precise", 41,
- "Champs de structure inconnu",42,
- "Symbole '<' manquant",43,
- "Symbole '>' manquant",44,
- "Impossible d'ouverture la library",45,
- "Nombre de parametres incorrect", 46,
- (char *)NULL,0
- };